package main

import (
	"fmt"
	"time"
)

func main (){
	//1.指针定义
	var a *int//声明指针，不会开辟内存空间
	fmt.Println(a == nil)
	b:=123
	a=&b
	fmt.Println(*a,a)
	//2.new函数定义指针，指针指向了一个地址
	x:=new(int)
	fmt.Println(x)
	*x=123
	fmt.Println(*x)
	//3.switch函数
	num:=60
	switch num {
	case 80:
		fmt.Println(80)
	case 88:
		fmt.Println(88)
	default:
		fmt.Println()
	}
	switch {
	case num > 80:
		fmt.Println("优秀")
	case num < 80,num >60:
		fmt.Println("及格")
	default:
		fmt.Println("不及格")
	}
	//4.时间类型
	//var t time.Time
	timenow:=time.Now()
	fmt.Println(timenow)
	fmt.Println("%T",timenow)
	//5.数组定义(数组是值，不是指针)
	var arr1 [3]int = [3]int{1,2,3}
	arr2:=[5]int{1,2,3}
	fmt.Println(arr1,arr2)
	//5.for循环,唯一一个循环体
	for i:=0;i < len(arr1);i++{
		fmt.Println(arr1[i])
	}
	//遍历数组，结合range
	for _,n:=range arr1{
		fmt.Println(n)
	}
	//6.切片类型定义(本质是个指针)
	str2:=make([]string,0)
	fmt.Println(len(str2),cap(str2))
	str2 = append(str2, "杜","佳辉")
	fmt.Println(len(str2),cap(str2))
	//7.切片指向数组所在地址，改变切片，数组也改变
	fmt.Println(arr2)
	n:=arr2[0:2]
	fmt.Println(n,arr2)
	n[0]=8
	fmt.Println(n,arr2)
	//8.copy函数不会产生扩容，对应位置的值copy对应位置。

}
